<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>EPICS exampleJava</title>
  <link rel="stylesheet" type="text/css"
  href="http://epics-pvdata.sourceforge.net/base.css" />
  <link rel="stylesheet" type="text/css"
  href="http://epics-pvdata.sourceforge.net/epicsv4.css" />
  <style type="text/css">
/*<![CDATA[*/
     .about { margin-left: 3em; margin-right: 3em; font-size: .83em}
     table { margin-left: auto; margin-right: auto }
     .diagram { text-align: center; margin: 2.5em 0 }
     body { margin-right: 10% }
/*]]>*/</style>

 <!-- Script that generates the Table of Contents -->
  <script type="text/javascript" src="http://epics-pvdata.sourceforge.net/script/tocgen.js"></script>

</head>

<body>

<div class="head">
<h1>EPICS exampleJava</h1>
<h2 class="nocount">Release 4.2-DEV - 2016.09.02</h2>

<h2 class="nocount">Abstract</h2>
<p>
This project provides a set of examples of client and server code for pvAccess.<br />
This release of exampleJava is one of the components of EPICS V4 Release 4.6.
</p>
  <!-- last para of Abstract is boilerplate reference to EPICS -->
      <p>For more information about EPICS generally, please refer to the home page of the <a
       href="http://www.aps.anl.gov/epics/">Experimental Physics and Industrial
      Control System</a>.</p>


</div> <!-- head -->

<div id="toc">
  <h2 class="nocount">Table of Contents</h2>
</div>

<!-- Place what you would like in the Table of Contents, inside the contents div -->
<div id="contents" class="contents">	  
<hr />
<h2>Overview</h2>
<p>
This project provides a set of examples of client and server code for pvAccess.
Each example can be built separately by building in the example subdirectory.
The complete set of examples can also be built by building in exampleJava itself.
</p>
<p>The main purpose of these examples is to understand and create new code for EPICS V4.
This document assumes that the reader also looks at the source code for the examples.
The reader should also be familiar with
<a
      href="http://epics-pvdata.sourceforge.net/informative/developerGuide/developerGuide.html">
      developerGuide
</a> 
</p> 
<h3>Each example is a template</h3>
<p>
Each example can be used as a template for building other applications:
</p>
<ul>
  <li>Choose an example that is similar to the desired application.</li>
  <li>Copy the complete example to where the desired application should reside.</li>
  <li>Edit the pom.xml file.</li>
  <li>Edit the new application</li>
</ul>

<h3>Building via exampleJava</h3>
<p>Just type:</p>
<pre>
mvn install
</pre>

<h3>Building an individual example</h3>
<p>In the example directory:</p>
<pre>
mvn install
</pre>

<h3>exampleCPP and exampleJava</h3>
<p>Each example that appears in both <b>exampleJava</b> and <b>exampleCPP</b>
are compatible, i. e. A client from one can communicate with a server
from the other.
</p>


<h2>Brief summary of examples and links to documentation</h2>
<h3>database</h3>
<p>
Provides a server that has a database of V4 PVRecords.
</p>
<p>Documentation:<a href="./database.html">database</a></p>

<h3>exampleClient</h3>
<p>
Provides a set of examples that use pvaClientJava.
</p>
<p>Documentation:<a href="./exampleClient.html">exampleClient</a></p>
<p>
In order to run the examples, <b>database</b> must also be built and then started (in linux) as follows:
</p>
<pre>
mrk&gt; pwd
/home/epicsv4/master/exampleJava/database
mrk&gt; scripts/exampleDatabase
</pre>
<h3>helloPutGet</h3>
<p>
Implements a PVRecord that is an example of a PVRecord intended to be accessed via channelPutGet.
It is a simple HelloWorld example.
</p>
<p>Documentation:<a href="./helloPutGet.html">helloPutGet</a></p>

<h3>helloRPC</h3>
<p>A very simple example of an EPICS V4 "Hello World"  RPC service.</p>

<p>Documentation:<a href="./helloRPC.html">helloRPC</a></p>

<h3>pvDatabaseRPC</h3>
<p>
An example of a pvDatabase PVRecord which also supports multiple RPC services.
</p>
<p>It illustrates synchronous and asynchronous RPC services, selecting services
based on the supplied pvRequest and using EPICS V4 to talk to an existing
object which has no knowledge of EPICS and call its methods, so creating 
distributed objects.</p>

<p>It represents a device which has a 2D position setpoint and readback as well
as a state. Each field has a time stamp, as does the record itself.
The device can be controlled through a client using RPC commands
to move through a sequence of points as well as conventionally by putting to
the setpoint. Commands are: configuring the set of points, starting a scan
(blocking or non-blocking), pausing and resuming, rewinding and stopping/aborting.</p>
<p>
A client ("control") for calling the services is supplied.
</p>

<p>Documentation:<a href="./pvDatabaseRPC.html">pvDatabaseRPC</a></p>


<h3>exampleLink</h3>
<p>
This implements a server that has records exampleGetLink, exampleMonitorLink, and examplePutLink.
Each has a link to another record (default name is doubleArray).
The other record can be in the same server or in another server including a V3 IOC DBRecord.
</p>
<p>
The example records can use provider local, pva, or ca to connect to doubleArray.
</p>
<p>Documentation:<a href="./exampleLink.html">exampleLink</a></p>
<h3>powerSupply</h3>
<p>
This is an example of creating a PVRecord that uses a somewhat complicated top level PVStructure.
It simulates a power supply.
</p>
<p>
The example also has an example pvaClient for accessing the PVRecord.
</p>
<p>Documentation:<a href="./powerSupply.html">powerSupply</a></p>


<h3>arrayPerformance</h3>
<p>
This is an example that shows performance for an array of longs.
</p>
<p>Documentation:<a href="./arrayPerformance.html">arrayPerformance</a></p>
<p>
arrayPerformanceMain implement a PVRecord that is a long array.
It has a process method with code that causes the array to be updated at selectable rates and sizes.!
</p>
<p>
It also has pvaClient examples that can get, put, and monitor the long array record.
</p>

<h3>serviceAPI</h3>

<p>Documentation:<a href="./serviceAPI.html">serviceAPI</a></p>
<p>The rdbService example is a complete functional server for accessing SQL databases 
such Oracle via an EPICS V4 server, and returning the resulting table ResultSet 
data back to an EPICS V4 client.
</p>

<h3>rdbService</h3>
<p>
<b>Warning:</b> rdbService does not run as delivered with EPICS V4 release 4.6
</p>
<p>Documentation:<a href="./rdbService.html">rdbService</a></p>

</div> <!-- class="contents" -->
</body>
</html>

